package menu_api

import (
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models"
	"giv-vue-blog/models/res"
)

// MenuDetailView 查看菜单详情.
// @Summary 查看菜单详
// @Description 查看菜单详
// @Tags 菜单管理
// @Accept json
// @Produce json
// @Param id path string true "Menu ID"
// @Success 200 {object} MenuResponse "菜单详情"
// @Router /api/menu/{id} [get]
func (MenuApi) MenuDetailView(c *gin.Context) {
	//先查菜单表
	id := c.Param("id")
	var menuModel models.MenuModel
	err := global.DB.Take(&menuModel, id).Error
	if err != nil {
		res.FailedWithMsg("菜单不存在", c)
		return
	}
	//查连接表  预加载BannerModel表，通过这个表查出图片id和路径
	var menuBanners []models.MenuBannerModel
	global.DB.Preload("BannerModel").Order("sort desc").Find(&menuBanners, "menu_id = ?", id)
	var banners = make([]Banner, 0)
	//model就是一个菜单
	for _, banner := range menuBanners {
		//如果菜单表的id等于 关联表中的menu_id，就将banner表中的id和路径添加到banners中
		if menuModel.ID != banner.MenuID {
			continue
		}
		banners = append(banners, Banner{
			ID:   banner.BannerID,         //图片id
			Path: banner.BannerModel.Path, //图片路径
		})
	}
	menuResponse := MenuResponse{
		MenuModel: menuModel,
		Banners:   banners,
	}
	res.OkWithData(menuResponse, c)
	return
}
